#include <iostream>
#include <string>
using namespace std;

class CAT
{
protected:
    string color;

public:
    CAT(string c)
    {
        color = c;
        cout << "A " << color << " cat is born." << endl;
    }
    virtual ~CAT()
    {
        cout << "A " << color << " cat is dead." << endl;
    }
    virtual void Show()
    {
        cout << "I'm a " << color << " cat." << endl;
    }
};

class LION : virtual public CAT
{
public:
    LION(string c) : CAT(c)
    {
        color = c;
        cout << "A " << color << " lion is born." << endl;
    }
    ~LION()
    {
        cout << "A " << color << " lion is dead." << endl;
    }
    void Show()
    {
        cout << "I'm a " << color << " lion." << endl;
    }
};

class TIGER : virtual public CAT
{
public:
    TIGER(string c) : CAT(c)
    {
        color = c;
        cout << "A " << color << " tiger is born." << endl;
    }
    ~TIGER()
    {
        cout << "A " << color << " tiger is dead." << endl;
    }
    void Show()
    {
        cout << "I'm a " << color << " tiger." << endl;
    }
};

class LIGER : public LION, public TIGER
{
public:
    LIGER(string c) : CAT(c), LION(c), TIGER(c)
    {
        color = c;
        cout << "A " << color << " liger is born." << endl;
    }
    ~LIGER()
    {
        cout << "A " << color << " liger is dead." << endl;
    }
    void Show()
    {
        cout << "I'm a " << color << " liger." << endl;
    }
};

int main()
{
    string c;
    CAT *p;
    cin >> c;
    p = new LIGER(c);
    p->Show();
    delete p;
    return 0;

    return 0;
}
